/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CapaLogica;

import java.util.LinkedList;
import CapaDatos.Shipping_DAO;
import CapaDatos.Shipping_POJO;
import CapaDatos.Pedido_DAO;
import CapaDatos.Detalle_DAO;
import CapaSeguridad.GuateBayException;

/**
 *
 * @author Cajas
 */
public class Compra {
    private int idCompra;
    private boolean statusOrden;
    private String fechaCompra;
    private String descripcion;    
    private LinkedList<Articulo> ListaArticulos; 
    private int idRegionShipping;
    private double precioShipping;
    private int idShipping;
    private int idComprador;
    private Pago pago;
    
    public Compra(){}
    
    //Este metodo usaria Interfaz cuando quiere realizar una compra
    public Compra(int idComprador, String descripcion){
        this.descripcion = descripcion;                
        this.idComprador = idComprador;        
    }        
            
    public void AgregarArticulo(Articulo articulo){
        this.ListaArticulos.add(articulo);
    }
    
    public void EliminarArticulo(Articulo articulo){
        this.ListaArticulos.remove(articulo);
    }
    
    public void agregarShipping(int idRegion){
        this.idRegionShipping = idRegion;
    }
    
    public void agregarModoPago(Pago pago){
        this.pago = pago;
    }
    
    public Respuesta registrarCompra(){
        Respuesta response = new Respuesta();
        Shipping_DAO shipping = new Shipping_DAO();
        try {
            Shipping_POJO shipp = shipping.getPrecioRegion(this.idRegionShipping);
            Pedido_DAO pedido = new Pedido_DAO();
            int idPedido = pedido.guardarReg(String.valueOf(this.statusOrden), this.fechaCompra, this.descripcion, this.pago.getFechaPago(), this.pago.isStatusPago(), this.idComprador, this.idShipping);
            if (idPedido > 0) {
                for(int i=0; i<this.ListaArticulos.size(); i++){
                    Detalle_DAO detalle = new Detalle_DAO();
                    int resultado = detalle.guardarReg(1, 0.0, idPedido, this.ListaArticulos.get(i).getId_articulo());
                    if(resultado == -1){
                        response.setTipoMensaje(5);
                        response.setObjetoRespuesta(null);
                        response.setMensaje("No se completo de guardar el detalle. Existio un error");
                        return response;
                    }
                }
                response.setTipoMensaje(0);
                response.setObjetoRespuesta(response);
                response.setMensaje("Compra Ingresada con exito.");
            } else if (idPedido == 0) {
                response.setTipoMensaje(5); //Error de Compra
                response.setObjetoRespuesta(0); //Respuesta de query de guardar registro
                response.setMensaje("No se pudo registrar la compra. Intentelo de nuevo");
            } else {
                response.setTipoMensaje(5);
                response.setObjetoRespuesta(-1);
                response.setMensaje("Existio un error en la compra. Intentelo de nuevo");
            }

        } catch (GuateBayException exception) {
            response.setTipoMensaje(5);
            response.setObjetoRespuesta(null);
            response.setMensaje("Existio un error en la compra");                        
            new CapaSeguridad.Error(exception).insertarError();
        }

        return response;
    }                

    /*************GETTERS AND SETTERS******************/
    
    public LinkedList<Articulo> getListaArticulos() {
        return ListaArticulos;
    }

    public void setListaArticulos(LinkedList<Articulo> ListaArticulos) {
        this.ListaArticulos = ListaArticulos;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getFechaCompra() {
        return fechaCompra;
    }

    public void setFechaCompra(String fechaCompra) {
        this.fechaCompra = fechaCompra;
    }

    public int getIdCompra() {
        return idCompra;
    }

    public void setIdCompra(int idCompra) {
        this.idCompra = idCompra;
    }

    public int getIdComprador() {
        return idComprador;
    }

    public void setIdComprador(int idComprador) {
        this.idComprador = idComprador;
    }

    public int getIdRegionShipping() {
        return idRegionShipping;
    }

    public void setIdRegionShipping(int idRegionShipping) {
        this.idRegionShipping = idRegionShipping;
    }

    public Pago getPago() {
        return pago;
    }

    public void setPago(Pago pago) {
        this.pago = pago;
    }

    public double getPrecioShipping() {
        return precioShipping;
    }

    public void setPrecioShipping(double precioShipping) {
        this.precioShipping = precioShipping;
    }

    public boolean isStatusOrden() {
        return statusOrden;
    }

    public void setStatusOrden(boolean statusOrden) {
        this.statusOrden = statusOrden;
    }

    public int getIdShipping() {
        return idShipping;
    }

    public void setIdShipping(int idShipping) {
        this.idShipping = idShipping;
    }
    
    
}
